Skaarj Fest Monster Modding
---------------------------

Creating a monster addon for Skaarj Fest is really easy it should be criminal! Well, ok, there are a few things to grasp, but that's about it. I'll try and explain in as simple a way as I can.


Firstly, I'm going to assume that you're familiar with compiling code packages. You need to put SkaarjFest in your EditPackages (UT2004.ini) before your custom package so that you don't run into a load of errors.


1. Creating your monster



Ok, so you want to create a new monster! Firstly, you have a custom Pawn class of SkaarjFest to subclass: ParserMonster.

So..

--
Class MyMonster extends ParserMonster;
--

Ok, simple enough. But what will really peeve you off is having to fill in the defaultproperties section. All those custom animations need defining otherwise your monster will look extremely weird to other people.
Unless you specifically need to hijack a function, most of the customisation can be done through defaultproperties alone. Let's run through the most common ones.

--
VertMesh=VertMesh'SkaarjPack_rc.Skaarjw'

^^ The VertMesh is what the model format for the majority of Unreal monsters is. You can specify your custom one here, but if you're using a skeletal mesh then those are also supported. See further down.
--



MonsterSkins(0)=FinalBlend'SkaarjPackSkins.Skins.Skaarjw1'
MonsterSkins(1)=Texture'PlayerSkins.JuggMaleAHeadA'

^^ Most models do not have more than 2 skin "slots" as I like to call them. Just put your custom monster's skins here.
--



MonsterTeamRedSkins(0)=FinalBlend'SkaarjPackSkins.Skins.Skaarjw2'
MonsterTeamRedSkins(1)=Texture'PlayerSkins.JuggMaleAHeadA'
MonsterTeamBlueSkins(0)=FinalBlend'SkaarjPackSkins.Skins.Skaarjw3'
MonsterTeamBlueSkins(1)=Texture'PlayerSkins.JuggMaleAHeadA'

^^ Ok, this is where it begins to get slightly overwhelming. You can specify custom team skins so that when playing in team games, team colour-specific skins can be used. If you don't have any for your mesh, then use:

bHasTeamSkins=false
--



MonsterHUDName="Skaarj Warrior"

^^ This is the name that appears in the top right hand corner of your game screen telling you which monster you are. Please, for the love of god supply one so that you don't end up with the default name..
--



GrowlSound=Sound'SkaarjPack_rc.Skaarj.roam11s'

^^ The sound your monster will play when you hit the Growl key. Again, try and make sure it has one.
--



WeaponClass="SkaarjFest.WtfSkaarjGun"

^^ The weapon class which will be given to your monster when it is spawned. I'll let you branch off and write your own firemodes etc. If you want to use the standard infinite ammo, just change the ammo class to SkaarjFest.WtfSkaarjGunAmmo.
--


bUsesSkeletalMesh=true

^^ If you use a skeletal mesh instead, make sure this reads true. Also, don't forget..

SkeletalMesh=SkeletalMesh'XanRobots.XanM02'

^^ The skeletal mesh itself, of course..
--



I have given you the basics, but really the best way is to have a poke around in the code and look at various examples of how things should be done.
If you want to get familiar with filling in defaultproperties, I suggest you start with Monster_Skaarj - it has all the basics. Just look around the code and see how things are done.

When you want to try your monster ingame, in an offline game, type "Morphto packagename.monsterclass" into the console (without quotes, DON'T put quotes around the packagename.monsterclass either) and you will morph into the monster. Bear in mind that this feature is buggered online, and for obvious reasons I've neglected to fix it.


2. Setting up the mutator and morph pickup



Ok, so you've made your monster, you've tested it ingame - now let's get it working with the morph pickup and mutator system!

Firstly, you need to create your weapon and pickup classes. For an example, copy the following classes and modify them:

SkaarjFest.WtfPowerUp_Ictus (weapon class)
SkaarjFest.WtfPowerUp_IctusPickup (pickup class)
SkaarjFest.WtfPowerUp_IctusFire (firemode class)
SkaarjFest.WtfPowerUp_IctusAltFire (firemode class)

You will see that for the firemode classes, all you have to do is supply the packagename.classname of the monster you wish to morph into. Simple, eh?

Once you've got your pickup working, it's time to put it in a mutator!

Create a new class and make it subclass like so:

--
Class MyMonsterMut extends CustomMonsterMut;
--

Now all you have to do is fill in the default properties. Everything else is taken care of.

Here are the ones you need to fill in:

--
CustomPickupClass="SkaarjFest.WtfPowerUp_IctusPickup"

^^ The pickup class of your custom morph weapon.
--
FriendlyName="Skaarj Fest Monster Addon"

^^ Change this to something like "Skaarj Fest - Monster Names Addon"
--
Description="A monster addon for Skaarj Fest which spawns a new Morph Powerup at a random location in the map."

^^ Again, feel free to noodle around and make it more exciting!


---

After that, compile your code, and your mutator should be exported automatically. Load it up ingame and see your pickup appear in 3 different places!


I hope this short runthrough helped somewhat,

Parser (http://fraghouse.beyondunreal.com)